<?php

namespace Syrius\Keys;

/**
 * Chiave generica da associare ad una tabella
 * @package	Keys
 * @author	Domenico Biancardi <domenico.biancardi@gmail.com>
 * @link	http://code.google.com/p/syrius/
 *
 */ abstract class Keys {
	/**
	 * A seconda che venga passata una stringa o un array, il costruttore permette di associare l'indexColName
	 */
	public function __construct($index_name = null, $index_opts = array()) {
		if (is_array($index_name))
			$this->indexColName = $index_name; else
			$this->indexColName [] = $index_name;
	}

	/**
	 * Ritorna la rappresentazione della chiave
	 */
	public function __toString() {
		$str = "";
		if ($this->constraint)
			$str = " CONSTRAINT `" . $this->constraint . "`";
		return $str;
	}

	/**
	 * $this -> constraint = $symbol;
	 */
	public function addConstraint($symbol) {
		$this->constraint = $symbol;
	}

	public function getName() {
		return $this->indexColName;
	}

	protected $constraint;

	/**
	 * index_type:
	 * USING {BTREE | HASH}
	 */
	protected $indexType;

	/**
	 * E' un array di colonne, in questo modo è possibile creare una chiave associando più di una colonna
	 * index_col_name:
	 * col_name [(length)] [ASC | DESC]
	 */
	protected $indexColName = array();

	/**
	 * index_option:
	 * KEY_BLOCK_SIZE [=] value
	 * | index_type
	 * | WITH PARSER parser_name
	 * | COMMENT 'string'
	 */
	protected $indexOptions = array();

	protected $referenceDefinition;

}

?>
